{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MNIST "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "packs loaded\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "\n",
    "%matplotlib inline  \n",
    "print (\"packs loaded\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Download and Extract MNIST dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Download and Extract MNIST dataset\n",
      "Extracting data/train-images-idx3-ubyte.gz\n",
      "Extracting data/train-labels-idx1-ubyte.gz\n",
      "Extracting data/t10k-images-idx3-ubyte.gz\n",
      "Extracting data/t10k-labels-idx1-ubyte.gz\n",
      "\n",
      " tpye of 'mnist' is <class 'tensorflow.contrib.learn.python.learn.datasets.mnist.DataSets'>\n",
      " number of trian data is 55000\n",
      " number of test data is 10000\n"
     ]
    }
   ],
   "source": [
    "print (\"Download and Extract MNIST dataset\")\n",
    "mnist = input_data.read_data_sets('data/', one_hot=True)\n",
    "print\n",
    "print (\" tpye of 'mnist' is %s\" % (type(mnist)))\n",
    "print (\" number of trian data is %d\" % (mnist.train.num_examples))\n",
    "print (\" number of test data is %d\" % (mnist.test.num_examples))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "What does the data of MNIST look like?\n",
      "\n",
      " type of 'trainimg' is <type 'numpy.ndarray'>\n",
      " type of 'trainlabel' is <type 'numpy.ndarray'>\n",
      " type of 'testimg' is <type 'numpy.ndarray'>\n",
      " type of 'testlabel' is <type 'numpy.ndarray'>\n",
      " shape of 'trainimg' is (55000, 784)\n",
      " shape of 'trainlabel' is (55000, 10)\n",
      " shape of 'testimg' is (10000, 784)\n",
      " shape of 'testlabel' is (10000, 10)\n"
     ]
    }
   ],
   "source": [
    "# What does the data of MNIST look like? \n",
    "print (\"What does the data of MNIST look like?\")\n",
    "trainimg   = mnist.train.images\n",
    "trainlabel = mnist.train.labels\n",
    "testimg    = mnist.test.images\n",
    "testlabel  = mnist.test.labels\n",
    "print\n",
    "print (\" type of 'trainimg' is %s\"    % (type(trainimg)))\n",
    "print (\" type of 'trainlabel' is %s\"  % (type(trainlabel)))\n",
    "print (\" type of 'testimg' is %s\"     % (type(testimg)))\n",
    "print (\" type of 'testlabel' is %s\"   % (type(testlabel)))\n",
    "print (\" shape of 'trainimg' is %s\"   % (trainimg.shape,))\n",
    "print (\" shape of 'trainlabel' is %s\" % (trainlabel.shape,))\n",
    "print (\" shape of 'testimg' is %s\"    % (testimg.shape,))\n",
    "print (\" shape of 'testlabel' is %s\"  % (testlabel.shape,))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "How does the training data look like?\n",
      "5847th Training Data Label is 3\n",
      "11646th Training Data Label is 5\n",
      "5996th Training Data Label is 6\n",
      "41841th Training Data Label is 2\n",
      "15149th Training Data Label is 4\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7febe051a6d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\ndNKPaeIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7febe028da90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7febe059e390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPwAAAEHCAYAAACKiSsJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEmVJREFUeJzt3Xu0XGV5x/FvCOFiIonxkoQ0cFKsLpYEk6yasIpyERRS\nLCVSsYA1IlpciqRGQOlF0nqjFyNSWbEoWEAlUBUW2oKipJEgsSAkBANeKCeJISRgEiGEW+T0j2ef\nnsmcOe/cz0zyfj9rzcrMfmbveWdnfvt992XOgCRJkiRJkiRJkiR1vReB3x/m1zwT+F4bnpuTXuC4\nNsy7GPjbBpebvT8AngWuLZk2Cvgm8AgRtqPL5tkb+FdgI/Ab4GbgwArLPrqY/5Ml0yYWz99Q1A4q\nm+e/gbPLptUa+C8BTxW354DnSx7/Zw3zd6NeYAfwJLAVuBM4BxhR4/w9xPrbq4k2NLrBfQR4c4Ov\n2cy8lbwSuI743G0DlgOzWrj8/9fMih4OlwP/A/SVTf8R8C7gsQq1DwJvAg4ngr6V2ACUGgV8AVhR\nNv+LwH8Bpw7RnvLXqscHgJcWt88AS0oen1TyvL2beI3h1ge8DTiA2DheAnwMuLLO5dS6gdhTjQF+\nAswEXgZcTXQCo1v9Qt0c+D8nwvpDdv1AvABcRvQmv6sw3+uIIezjRE96QzGt1EeBW4Gfly17M9ET\n31NhuZ8mNiRfJHrly0pqbwF+UbT3i1XfWbxm6ev2AhcC9xfLHgl8HPgV0Xv+DDil5PnvAe4oefwi\n0bNWakM9z90L+Byx7v4XOJfae+CngO8A7wTmMbDOTwLuA34LrAMuLpnnR8W/24r5ZwOHALcDTxTt\n+BowtobXL1fLcmYR63YLcBWwb0ntbcBKBkYu02p83X9nYNT4CuC7xTJ+Q7zfShu3R4BLgU3ERvTL\nwD7Aa2p8zd3eAUQYDwQWsuuQvtR64KiyaacSwZkEvAT4BrCopH5wsezR7PqfU2pvKg/plwLvLZv2\nIrEbcAAwhdhonDBEe/stZNf31AvcC0xm4EP3Z8QuBsBpwHZgQvH4PQwO8VBtqOe5HyACcCAwDvgB\nsVEdKvBDDW3XEhsViF2n/vBPI0Zlf1o8PpjBG5RDiP3jUURglgGfH+L1+99PpSF9teX0Ep+TyUSv\nupyBz8IMInxvIAL67uK9jirqqSH9V4F/KO5/ltinH1ncjky8j1LTgWeI0V9LdWsP/0ngK8Cj1D+M\n/hbRo2wgepXXsmuoLyMOqjxdLLve5VfaQl9C9MTriY3C9DqX2Ve0awMxKoE4TvFYcf8G4JdEDziU\netpQ/tzXF9NPI3qaR4le97M0Ntx+FBhf3F9GbEQAVhO7Mv3HXSot+2FiVPcC0Tt/nsHHaWpRbTl9\nxOhmA9EDfxo4vaj9JfBvwN3F864h/l+OqLMNzxMdTw+x4byzhnkOIDqDhcSop6W6MfDTiS3zpcXj\nej9w/0JsGccTvfiNwC1F7U+I/aX/KFl2vcuvtIF4rOT+juI16rW+7PG7iQ3X1uJ2GPDyxPzlbUjt\n/w3V3kll7fh1Yhkpk4lhMsRGaikxkthG9Pyp9zGB2Cj8mthgX1vl+c0sp/S9rmPg4O7BxG7f1pLb\n71H54G8l/Z+pfyZ2y75PbIA+VmW+/Yndoh8D/1jja9WlGwN/NLFFXEccaf8oMUyvtF9dyYnEsGob\nsYX9IrGv9nJiGPaHxXI3Ej3aXxEbhVo0c9Cu2nJKpx0MXAF8iNhwvQx4gPYf3NpIDPP7TRnqiQlv\nIAK/vHj8DeAmIjDjiGMk/Z+7SuvhM0RveBixz/0XNPY5rWU5B5Xd31DcX0f0+C8ruY0Brq+zDduB\n84ndi5OBBQy9K7AvsZ7WMbA71HLdGPgriH2y1xO9/ZeII5al+8X7AvtVuA+xXzaPGBqNIo7abyAO\nmvwdcaqvf9k3F693Vsn8+5Usr/Q+xH7dIVXaX0soqz1nNBGGJ4j/o7OID26t6hm5lD73BmA+A/vw\nH6P6Rq5/3gOIA13XEb1p/zB+DNFDPk9seM8oWebjxD546TodQ+xuPUlsOC6o4T30fwb6byNrWM4I\nYoM6mdio/g0Dgf4ycTxjVvG80cTBx1pGbqXr/W3Aq4tpTxIboEoHmvtPNe8gjrm0TTcG/hli+LeZ\nCNj2YtpvSp7zc2LlHEgckX+aga31R4gP0cPFMk4E5ha17WXLfqaYd1vJsvvPK/cBDxX1fl8gDqZt\nYWCXo1wtxwWqPWcNcbT8LmL4fRgDPWal+cuXVVqv57lfJoaf9wM/JTa0vyPW51C+Q6yvdcBFRbtL\nN6AfJA5iPUlscEt7yR1ET3onsU5nAX9PnJ76bbHsb1Voc7mfFcvqv82rYTl9wNcZGG7/EvhUUfsp\n8H5idLilqL27hnb0L7f/ea8GbiP2xX9MnGZeVmGePyI2KG9h4IzFU9R+kE9qiTnE0WxJe6D9gD8m\nTktOJi5MWpScQ6rgRGJ4/EuqH6nshF5iGHsfcWVfp11F7HKsLpk2nhge/oIYho5rw+vuT7z/J4vX\nv5LK+62V2reQOCJ+X3E7sQ3tq8UU4qzAz4gDnecV04dj/dViqPYtpDvWX9NGEqcmeoiDEyuBQzvZ\noAoeYeC8cTd4E3HxR2mg/om4Gg9io3nJcDeqRKX2XUwche60iQxcgzCGON5zKN2z/oZq37Csv+E4\naDeLCHwvcRHEEgautOom3XQ99x3Eke1SJxPXWFP8ewqdU6l90B3r8DGiU4E4SPsgsXvSLetvqPbB\nMKy/4Qj8ZAZfzDF5iOd2Sh9xGek9xNHZbjSBGEZT/Dsh8dxO+TCwitgV6NSQuVQPMRL5Cd25/nqI\n9q0oHrd9/Q1H4Ft1sUo7HUms+DnEudk3dbY5VTVySXC7LQamEsPVjcTpuU4aQ5yKm8/gS1S7Yf2N\nIc69zyd6+mFZf8MR+A0Mvnqr0Us222Vj8e/jxFV3bfkucpM2MfBlmknEtQTdZDMDQfoKnV2Ho4iw\nX0tcvQbdtf762/c1Bto3LOtvOAJ/D3F1Ww/xlb93Ele4dYuXMPCtpNHAW9n1YFS3uJm4oITi35sS\nz+2ESSX359K5dTiCGBKvYdeLo7pl/Q3Vvm5Zfy0xhzga+SviaqxuMpU4iLKSOE3SDe27jvjG2fPE\n8Y+ziLMIP6Dzp5VgcPveS3yj7H5iH/QmOreP/EbiysCV7HqKq1vWX6X2zaF71p8kSZIkSZKk3UW3\nfyFGUplGr90dSZxmO564sOZu4g8APljynE5fySTlblC+G73wZnf5QoykEo0Gfnf4QoykMo0G3uG6\ntBtqNPC7wxdiJJVpNPDd/oUYSRU0+kulO4kfGvweccT+SnY9Qi+pC7XzT+q4ny91VstOy0naDRl4\nKSMGXsqIgZcyYuCljBh4KSMGXsqIgZcyYuCljBh4KSMGXsqIgZcyYuCljBh4KSMGXsqIgZcyYuCl\njBh4KSMGXsqIgZcyYuCljBh4KSMGXsqIgZcyYuCljBh4KSMGXsqIgZcyYuCljBh4KSMGXsrI3k3O\n3ws8CfwOeAGY1WyD1BqHHXZYsn7qqacm6wsWLKj6Ghs2bEjWV69enaw/88wzyfr555+frD/xxBPJ\nugZrNvB9wDHAluabIqndWjGkH9GCZUgaBs0Gvg/4AXAP8P7mmyOpnZod0h8JbAReCdwGPATc0Wyj\nJLVHsz38xuLfx4Eb8aCd1NWaCfxLgJcW90cDbwXSh2UldVQzQ/oJRK/ev5yvA99vukWS2qadR9j7\n2rjs7I0bNy5ZX7NmTbI+ceLEptuwbNmyZH369OnJ+tixY5P1u+++O1mfPXt2sq7B+fZKOykjBl7K\niIGXMmLgpYwYeCkjBl7KiIGXMuJ5+N3U7bffnqwfc8wxTS1//vz5VZ+zatWqZP3iiy9O1o899thk\n/dlnn03WZ86cmaw/9NBDyXoGPA8v5czASxkx8FJGDLyUEQMvZcTASxkx8FJGPA+/m1q7dm2yPmXK\nlKaW//TTT1d9zv7775+s77VXe/uT4447LllfunRpW19/N+B5eClnBl7KiIGXMmLgpYwYeCkjBl7K\niIGXMtLsb8upQ66//vpk/dxzz03W99tvv2R99OjRVdtwzTXXJOsrVqxI1i+44IJkferUqVXboPrY\nw0sZMfBSRgy8lBEDL2XEwEsZMfBSRgy8lJFavg9/FXASsBmYVkwbD1wPHAz0AqcB28rm8/vwHXTI\nIYck63PmzEnWb7311qqv0dvbm6zv3LkzWb/rrruS9Wq//+734atq6PvwXwVOLJv2ceA24DXAD4vH\nkrpcLYG/A9haNu1k4Ori/tXAKa1slKT2aHQffgKwqbi/qXgsqcu14qBdH+6vS7uFRgO/CZhY3J9E\nHNCT1OUaDfzNwLzi/jzgptY0R1I71RL464AfA68F1gNnAZcAbwF+Aby5eCypy/l36dU248ePT9Yf\neOCBZH3ixInJuufhq/Lv0ks5M/BSRgy8lBEDL2XEwEsZMfBSRgy8lBH/Lr3a5qCDDkrWq51nr/Yb\n9Q8//HDdbcqdPbyUEQMvZcTASxkx8FJGDLyUEQMvZcTASxnxPLzaZsGCBU3N/+ijjybr69ata2r5\nObKHlzJi4KWMGHgpIwZeyoiBlzJi4KWMGHgpI56H75DTTz89WT/00EPb+vrf/va3k/WVK1dWXcY+\n++yTrM+YMaOuNpVbtGhRU/NrMHt4KSMGXsqIgZcyYuCljBh4KSMGXsqIgZcyUsvvw18FnARsBqYV\n0xYC7wMeLx5fBNxaNl/Wvw9//PHHJ+u33HJLsj5y5MhWNmeQ5557Llm//PLLqy6jp6cnWX/729+e\nrG/fvj1ZnzZtWrK+du3aZF2N/T78V4ETy6b1AYuAGcWtPOySulAtgb8D2Fphei2jA0ldpJl9+A8D\nq4ArgXGtaY6kdmo08IuBqcB0YCPwuZa1SFLbNBr4zcR+fB/wFWBWy1okqW0aDfykkvtzgdUtaIuk\nNqvl67HXAUcDrwDWAxcDxxDD+T7gEeCcNrVPUgu180h71ufhFy9enKyfc056G3n22Wcn6/fee2+y\nfuaZZybr8+fPT9ZHjRqVrLfCGWeckawvWbKk7W3YwzV0Hl7SHsLASxkx8FJGDLyUEQMvZcTASxkx\n8FJG/Lv0bbJjx46m5u/t7U3WV61a1VS9Wvs+8YlPJOutUO09qvXs4aWMGHgpIwZeyoiBlzJi4KWM\nGHgpIwZeyojn4duk2u+vV/s++jve8Y5kfenSpU3Nf+GFFybr2jPZw0sZMfBSRgy8lBEDL2XEwEsZ\nMfBSRgy8lBHPw7fJnXfemaxv2bIlWa/2d+XHjh2brFf7bfZ99903WV++fHmyDrD33umPzxFHHJGs\nH3vsscn6ihUrqrZB9bGHlzJi4KWMGHgpIwZeyoiBlzJi4KWMGHgpI9XOw08BrgFeRfze+xXAZcB4\n4HrgYKAXOA3Y1rZW7oHWrFmTrB911FHJerXfVt+5c2eyXu3362v5vvx5552XrFc7D1+trtar1sO/\nAHwEeB1wBPAh4FDg48BtwGuAHxaPJXW5aoF/DFhZ3N8OPAhMBk4Gri6mXw2c0pbWSWqpevbhe4AZ\nwE+ACcCmYvqm4rGkLldr4McA3wLmA0+V1fqKm6QuV0vgRxFhvxa4qZi2CZhY3J8EbG590yS1WrXA\njwCuBNYAl5ZMvxmYV9yfx8CGQFIXq3Za7kjgXcD9wH3FtIuAS4AbgLMZOC0nqctVC/xyhh4FHN/i\ntmRl7ty5yfoJJ5yQrM+YMSNZv/HGG5P1bviu+cyZMzvdhOx4pZ2UEQMvZcTASxkx8FJGDLyUEQMv\nZcTASxnx79J3yNatW5P1JUuWNFUfDj09PZ1ugupkDy9lxMBLGTHwUkYMvJQRAy9lxMBLGTHwUkY8\nD6+GzZ49O1kfMWJEsr5+/fpWNkc1sIeXMmLgpYwYeCkjBl7KiIGXMmLgpYwYeCkjnodXw9atW5es\nH3744cn6okWLWtkc1cAeXsqIgZcyYuCljBh4KSMGXsqIgZcyYuCljKS/sAxTgGuAVwF9wBXAZcBC\n4H3A48XzLgJuLZu3r2WtlNSIQfmuFviJxW0lMAb4KXAKcBrwFJC6csLAS501KN/VrrR7rLgBbAce\nBCYPtTBJ3a2effgeYAawonj8YWAVcCUwrrXNktQOtQZ+DPBNYD7R0y8GpgLTgY3A59rSOkktVcuw\nfBTwXeAW4NIK9R7gO8C0sunuw0udNSjf1Xr4EcSQfQ27hn1Syf25wOqmmyap7ar18G8EfgTcz0CP\n/dfA6cRwvg94BDgH2FQ2rz281Fl1n5ZrhoGXOqvuIb2kPYiBlzJi4KWMGHgpIwZeyoiBlzJi4KWM\nGHgpIwZeyoiBlzJi4KWMGHgpIwZeyoiBlzJi4KWMtDPwy9q4bElp5k+SJEmSJEmSpK7yfx8F2r7b\nsLDkAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7febe057c8d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7febe05be090>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# How does the training data look like?\n",
    "print (\"How does the training data look like?\")\n",
    "nsample = 5\n",
    "randidx = np.random.randint(trainimg.shape[0], size=nsample)\n",
    "\n",
    "for i in randidx:\n",
    "    curr_img   = np.reshape(trainimg[i, :], (28, 28)) # 28 by 28 matrix \n",
    "    curr_label = np.argmax(trainlabel[i, :] ) # Label\n",
    "    plt.matshow(curr_img, cmap=plt.get_cmap('gray'))\n",
    "    plt.title(\"\" + str(i) + \"th Training Data \" \n",
    "              + \"Label is \" + str(curr_label))\n",
    "    print (\"\" + str(i) + \"th Training Data \" \n",
    "           + \"Label is \" + str(curr_label))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Batch Learning? \n",
      "type of 'batch_xs' is <type 'numpy.ndarray'>\n",
      "type of 'batch_ys' is <type 'numpy.ndarray'>\n",
      "shape of 'batch_xs' is (100, 784)\n",
      "shape of 'batch_ys' is (100, 10)\n"
     ]
    }
   ],
   "source": [
    "# Batch Learning? \n",
    "print (\"Batch Learning? \")\n",
    "batch_size = 100\n",
    "batch_xs, batch_ys = mnist.train.next_batch(batch_size)\n",
    "print (\"type of 'batch_xs' is %s\" % (type(batch_xs)))\n",
    "print (\"type of 'batch_ys' is %s\" % (type(batch_ys)))\n",
    "print (\"shape of 'batch_xs' is %s\" % (batch_xs.shape,))\n",
    "print (\"shape of 'batch_ys' is %s\" % (batch_ys.shape,))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5. Get Random Batch with 'np.random.randint'\n",
      "type of 'batch_xs2' is <type 'numpy.ndarray'>\n",
      "type of 'batch_ys2' is <type 'numpy.ndarray'>\n",
      "shape of 'batch_xs2' is (100, 784)\n",
      "shape of 'batch_ys2' is (100, 10)\n"
     ]
    }
   ],
   "source": [
    "# Get Random Batch with 'np.random.randint'\n",
    "print (\"5. Get Random Batch with 'np.random.randint'\")\n",
    "randidx   = np.random.randint(trainimg.shape[0], size=batch_size)\n",
    "batch_xs2 = trainimg[randidx, :]\n",
    "batch_ys2 = trainlabel[randidx, :]\n",
    "print (\"type of 'batch_xs2' is %s\" % (type(batch_xs2)))\n",
    "print (\"type of 'batch_ys2' is %s\" % (type(batch_ys2)))\n",
    "print (\"shape of 'batch_xs2' is %s\" % (batch_xs2.shape,))\n",
    "print (\"shape of 'batch_ys2' is %s\" % (batch_ys2.shape,))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([40597, 27095, 26480,  9962, 40322, 38562, 53100, 29354, 24853,\n",
       "       39323, 12301, 29530,  6876, 17472, 11859, 32907, 31891, 43449,\n",
       "       42376, 22173,   115, 16827, 47957, 10636, 43259, 16207, 33329,\n",
       "       12654,  5640,  6254, 36093, 39494, 45642, 28959,  2347,  1911,\n",
       "       11653, 40175, 28654, 29179, 36227,  3112, 35634, 22400, 38441,\n",
       "       11548, 29659, 39165, 42957, 19418,  3168, 53571, 29323,  8976,\n",
       "       18668, 46934, 19848, 19982,  9148, 16059, 48727, 31939, 11938,\n",
       "       36669, 24021, 31104, 39372, 44231, 10097, 43418,  5704, 17825,\n",
       "       54984, 38007,  2098, 31896, 41666,  8106, 37039,  3065, 44691,\n",
       "        6446, 34830, 26956, 36618, 15762, 17894, 23088, 37065, 41814,\n",
       "       20915, 13454, 43314,  2817, 34319, 13249, 39225, 36624, 53752, 44867])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "randidx"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
